
package principal;

import DAO.EquipoDAO;
import DAO.EquipoVO;
import DAO.PartidoDAO;
import DAO.PartidoVO;
import DAO.TorneoDAO;
import DAO.TorneoVO;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.ListIterator;

public class Main {
    
    public static void main (String[] args)
    {
        EquipoVO equipo1;
        EquipoVO equipo2;
        PartidoVO partido;
        EquipoDAO DaoEquipo = new EquipoDAO();
        PartidoDAO DaoPartido = new PartidoDAO();
        TorneoDAO DaoTorneo = new TorneoDAO();
        String nom = "";
        String jug = "";
        int op;
        
        do
        {
            System.out.println ("\n\nOpciones:");
            System.out.println ("1.  Registrar equipo");
            System.out.println ("2.  Registrar partido");
            System.out.println ("3.  Ver partidos local de un equipo");
            System.out.println ("4.  Ver partidos visitante de un equipo");
            System.out.println ("5.  Consultar tabla de posiciones");
            System.out.println ("6.  Salir");
            System.out.print("Opcion: ");
            op = Consola.readInt();
            switch (op)
            {
                case 1:  
                         System.out.print("Ingrese nombre del equipo: ");
                         nom = Consola.readLine();
                         System.out.print("Ingrese lista de jugadores del equipo: ");
                         jug = Consola.readLine();
                         equipo1 = new EquipoVO(nom, jug);
                         equipo1 = DaoEquipo.Crear(equipo1);
                         System.out.println("Equipo creado!!\nId de equipo: " + equipo1.getKey().getId());
                         break;
                case 2:
                         System.out.print("Ingrese numero de fecha actual: ");
                         int fecha = Consola.readInt();
                         System.out.print("Ingrese nombre del equipo Local: ");
                         nom = Consola.readLine();
                         equipo1 = new EquipoVO(nom);
                         System.out.print("Ingrese cantidad de goles convertidos: ");
                         int golLocal = Consola.readInt();
                         System.out.print("Ingrese nombre del equipo Visitante: " );
                         nom = Consola.readLine();
                         equipo2 = new EquipoVO(nom);
                         System.out.print("Ingrese cantidad de goles convertidos: ");
                         int golVisit = Consola.readInt();
                         equipo1 = DaoEquipo.Cargar(equipo1);
                         equipo2 = DaoEquipo.Cargar(equipo2);
                         System.out.println("Ingrese dia jugado del partido en formato dd-mm-aaaa:");
                         String diaJuego = Consola.readLine();
                         DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
                         try {
                             Date dia = df.parse(diaJuego);
                             partido = new PartidoVO(equipo1, equipo2, dia, golLocal,golVisit);
                             partido = DaoPartido.Crear(partido, fecha);
                             System.out.println("Partido registrado!!\nId de partido: " + partido.getKey().getId());
                         } catch (ParseException e) {
                             System.out.println("Error formato dia de juego - "+ e.getMessage());
                         }
                         break;
                 case 3:
                         System.out.print("\nIngrese nombre del equipo: ");
                         nom = Consola.readLine();
                         equipo1 = new EquipoVO(nom);
                         List<PartidoVO> part = DaoPartido.ListarLocal(equipo1);
                         ListIterator p = part.listIterator();
                         System.out.println("\nPartidos Jugados:");
                         while(p.hasNext()){
                             partido = (PartidoVO)p.next();
                             System.out.println(equipo1.getNombre()+" VS " + partido.getEquipoVisitante().getNombre());
                             System.out.println("Resultado: "+partido.getGolesLocal()+ " a "+ partido.getGolesVisitante());
                             System.out.println("Dia de juego: "+ partido.getFecha()+"\n");
                         }
                         break;
                 case 4:
                         System.out.print("\nIngrese nombre del equipo: ");
                         nom = Consola.readLine();
                         equipo1 = new EquipoVO(nom);
                         List<PartidoVO> part2 = DaoPartido.ListarVisitante(equipo1);
                         ListIterator p2 = part2.listIterator();
                         System.out.println("\nPartidos Jugados:");
                         while(p2.hasNext()){
                             partido = (PartidoVO)p2.next();
                             System.out.println(partido.getEquipoLocal().getNombre()+" VS " + equipo1.getNombre());
                             System.out.println("Resultado: "+partido.getGolesLocal()+ " a "+ partido.getGolesVisitante());
                             System.out.println("Dia de juego: "+ partido.getFecha()+"\n");
                         }
                         break;
                case 5:
                         System.out.println("Tabla de posiciones:");
                         List<TorneoVO> torneo= DaoTorneo.Listar();
                         ListIterator iter = torneo.listIterator();
                         System.out.println("Posicion              Equipo                             Fecha           Puntos      Goles a Favor      Goles en Contra");
                         
                         int cont=1;
                         while(iter.hasNext())
                         {
                             TorneoVO t= (TorneoVO) iter.next();
                             System.out.print("");
                             System.out.println(stringPosicion(cont)+stringEquipo(t.getEquipo().getNombre())+"           "+t.getFecha()+"                "+t.getPuntos()+"               "+t.getGolAFavor()+"                  "+t.getGolEncontra());
                             cont++;
                         }

                         break;
            }
        }
        while (op != 6);
    }


    public static String stringPosicion(int posicion)
    {
        String cad="    ";
        cad+=""+posicion;
        cad+="             ";
        return cad;
    }

    public static String stringEquipo(String equipo)
    {
        int largo=equipo.length();

        for(int i=0; i<30-largo;i++)
        {
            equipo+=" ";
        }

        return equipo;

    }

}
